<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>不向后兼容的变更</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="migration54.changes.html">PHP 5.4.x 中的变更</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="migration54.new-features.html">新特性</a></div>
 <div class="up"><a href="migration54.html">从 PHP 5.3.X 迁移到 PHP 5.4.X</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="migration54.incompatible" class="section">
  <h2 class="title">不向后兼容的变更</h2>
  <p class="simpara">
  尽管大部分现有的 PHP 5 代码不需要任何改变就可以正常运行，但请注意一些不向后兼容的变更：
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     不再支持 <a href="features.safe-mode.html" class="link">安全模式</a>  。任何依赖安全模式的应用在安全方面都需要进行调整。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     移除 <a href="security.magicquotes.html" class="link">魔术引号</a>  。为避免出现安全问题，依赖此特性的应用可能需要升级。
    </span>
    <span class="simpara">
     <span class="function"><a href="function.get-magic-quotes-gpc.html" class="function">get_magic_quotes_gpc()</a></span> 和 <span class="function"><a href="function.get-magic-quotes-runtime.html" class="function">get_magic_quotes_runtime()</a></span> 现在总是返回 <strong><code>FALSE</code></strong> 。 调用 <span class="function"><a href="function.set-magic-quotes-runtime.html" class="function">set_magic_quotes_runtime()</a></span> 将产生一个 <strong><code>E_CORE_ERROR</code></strong> 级别的错误。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
   <a href="ini.core.html#ini.register-globals" class="link">register_globals</a> 和 <a href="ini.core.html#ini.register-long-arrays" class="link">register_long_arrays</a> <var class="filename">php.ini</var>  指令被移除。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <a href="language.references.pass.html" class="link">调用时的引用传递</a> 被移除。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <a href="control-structures.break.html" class="link">break</a> 和 <a href="control-structures.continue.html" class="link">continue</a> 语句不再接受可变参数（ 比如： <em>break 1 + foo() * $bar;</em> ）。像类似 <em>break 2;</em> 这样的固定参数仍可使用。受此变化影响，不再允许出现 <em>break 0;</em> 和 <em>continue 0;</em> 。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     在 <a href="book.datetime.html" class="link">日期与时间扩展</a> 中，不再支持时区使用 TZ（TimeZone）环境变量设置。必须使用 <a href="datetime.configuration.html#ini.date.timezone" class="link">date.timezone</a> <var class="filename">php.ini</var> 配置选项或 <span class="function"><a href="function.date-default-timezone-set.html" class="function">date_default_timezone_set()</a></span> 函数来指定时区。PHP 将不再尝试猜测时区，而是回退到“UTC”并发出一条 <strong><code>E_WARNING</code></strong> 错误。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     非数字的字符串偏移量，比如  <em>$a[&#039;foo&#039;]</em> 此处 $a 是一个字符串，现在使用 <span class="function"><a href="function.isset.html" class="function">isset()</a></span> 时返回 false，使用 <span class="function"><a href="function.empty.html" class="function">empty()</a></span> 时返回 true，并产生一条  <strong><code>E_WARNING</code></strong> 错误。偏移量类型是布尔和 null 则产生一条 <strong><code>E_NOTICE</code></strong> 错误。 数字字符串（比如 <em>$a[&#039;2&#039;]</em> ）仍像以前一样运行。注意像类似 <em>&#039;12.3&#039;</em> 和 <em>&#039;5 foobar&#039;</em> 这样的偏移量将被视为非数字并产生一条  <strong><code>E_WARNING</code></strong> 错误，但因为向后兼容的原因它们会被分别转换成 12 和 5 。
    </span>
    <span class="simpara">
     注意：下列代码返回不同的结果。
    </span>
    <span class="simpara">
     $str=&#039;abc&#039;;var_dump(isset($str[&#039;x&#039;])); // 在 PHP 5.4 或更新版本返回 false，但在 PHP 5.3 或更低版本返回 true
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     数组转换成字符串将产生一条 <strong><code>E_NOTICE</code></strong> 级别的错误，但返回的结果仍是字符串 <em>&quot;Array&quot;</em> 。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
      <strong><code>NULL</code></strong> 、<strong><code>FALSE</code></strong> 、或 一个空字符串被添加成一个对象的属性时将发出一条  <strong><code>E_WARNING</code></strong> 级别的错误，而不是 <strong><code>E_STRICT</code></strong> 。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     现在参数名使用全局变量将会导致一个致命错误。禁止类似 <em>function foo($_GET, $_POST) {}</em> 这样的代码。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Salsa10 和 Salsa20 <a href="book.hash.html" class="link">哈希算法</a> 被移除。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     当使用两个空数组作为参数时， <span class="function"><a href="function.array-combine.html" class="function">array_combine()</a></span> 现在返回 <em>array()</em>  而不是 <strong><code>FALSE</code></strong> 。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.htmlentities.html" class="function">htmlentities()</a></span> 将像 <span class="function"><a href="function.htmlspecialchars.html" class="function">htmlspecialchars()</a></span> 一样处理亚洲字符集，这是以前 PHP 版本的处理情况，但现在将会发出一条 <strong><code>E_STRICT</code></strong> 错误。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
    强烈建议不要再使用 <span class="function"><a href="function.eregi.html" class="function">eregi()</a></span> ，此特性在最新版本中被移除。
    </span>
   </li>
  </ul>
  <p class="simpara">
   下列关键字现在被 <a href="reserved.html" class="link">保留</a> ，且不能用于函数名或类名。
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <a href="language.oop5.traits.html" class="link">trait</a>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <a href="language.types.callable.html" class="link">callable</a>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <a href="language.oop5.traits.html" class="link">insteadof</a>
    </span>
   </li>
  </ul>
  <p class="simpara">
   下列函数已从 PHP 中移除：
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.define-syslog-variables.html" class="function">define_syslog_variables()</a></span>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.import-request-variables.html" class="function">import_request_variables()</a></span>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.session-is-registered.html" class="function">session_is_registered()</a></span> 、 <span class="function"><a href="function.session-register.html" class="function">session_register()</a></span> 以及 <span class="function"><a href="function.session-unregister.html" class="function">session_unregister()</a></span> 。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
    别名 <span class="function"><a href="function.mysqli-bind-param.html" class="function">mysqli_bind_param()</a></span> 、 <span class="function"><a href="function.mysqli-bind-result.html" class="function">mysqli_bind_result()</a></span> 、 <span class="function"><a href="function.mysqli-client-encoding.html" class="function">mysqli_client_encoding()</a></span> 、 <span class="function"><a href="function.mysqli-fetch.html" class="function">mysqli_fetch()</a></span> 、 <span class="function"><a href="function.mysqli-param-count.html" class="function">mysqli_param_count()</a></span> 、 <span class="function"><a href="function.mysqli-get-metadata.html" class="function">mysqli_get_metadata()</a></span> 、 <span class="function"><a href="function.mysqli-send-long-data.html" class="function">mysqli_send_long_data()</a></span> 、 mysqli::client_encoding() 以及 mysqli_stmt::stmt() 。
    </span>
   </li>
  </ul>
 </div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="migration54.changes.html">PHP 5.4.x 中的变更</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="migration54.new-features.html">新特性</a></div>
 <div class="up"><a href="migration54.html">从 PHP 5.3.X 迁移到 PHP 5.4.X</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
